The present invention relates generally to information management among applications and, more particularly, to providing an information bus for allowing interactive applications to share data one with another.
Numerous advances have been made recently to simplify the manner in which users interact with computer systems. For example, graphic user interfaces (GUI) have been created to provide visually intuitive means of interacting with a computer. In particular, GUIs such as that available in the Workplace Shell, part of the OS/2(copyright) operating system, commercially available from IBM Corporation, Boca Raton, Fla., enable users to process and store data using graphic metaphors which resemble real life objects. One of the major components of these and other GUIs is the icon, i.e., a small graphical representation of a familiar object, typically implemented with a bit map, which represents an object, data or other resource available on the computer system. The work area or xe2x80x9cdesktopxe2x80x9d of the GUI may contain multiple icons which are easily selected and manipulated by the user with a pointing device i.e., a mouse, pen, touch screen or even speech recognition software. Such interfaces have vastly reduced the level of sophistication and experience necessary for users to interact in a meaningful manner with the computer system and, accordingly, have increased user productivity.
One of the major developments in the field of software design has been the emergence of object-oriented technology. As explained in greater detail hereinafter, object-oriented technology enables the analysis, design and implementation of software systems with intelligent, autonomous agents called objects. Such objects facilitate the design of modular software that more closely mimics the physical or logical entities within the real world.
One of the more recent developments in object-oriented programming is the Java(copyright) programming language developed by Sun Microsystems, Mountainview, Calif. The Java programming language is an object-oriented language, having many elements in common with the C programming language and C++ programming language, with additional modifications. The Java programming language has the benefits of an interpreted language in the performance of compiled code. To enable Java applications to execute on a computer network, a compiler generates an architecture-neutral object file format, i.e. the compiled code is executable on many processors, given the presence of the Java-run time system.
The Java language enables developers to write custom applications called Java applets. When integrated into webpages delivered over the Internet, Java applets allow expert graphics rendering, real-time interaction with users, live information updating and full use of multimedia and instant interaction with servers over a computer network. With the Java programming language, many applications will have better performance because multiple concurrent threads of activity in the applications were supported by the multithreading built into the Java environment.
The Java language and environment, including the JavaBeans specification provide mechanisms for the creation and management of small components whose function represent the building block to use in applications such as web applications. The term component as used in the specification, refers to Java applets as well as to Java Beans.
One method of providing data exchange across components sharing a common bus is known as Dynamic Data Exchange (DDE), found in Windows, marketed by Microsoft. The DDE uses an event-response model, where an interaction depends on the receiving application to understand a specific event and respond with application-specific callbacks. During operation, the communicating applications must be aware of each other and be in actual direct communication with one another. This requires interrupts and protocols to be formed that are time and resource consuming in order to share system information among applications and components.
Notwithstanding the current developments in data communication among applications and components in an object-oriented environment, a need exists for a system in which the semantics of data flow are based on interpreting the contents of data and the names of the data, not on the names or parameters of the events associated with the generation of the data.
In addition, a need exists for a system in which data flow among a plurality of components in a computer system, are capable of exchanging data without the need for a data broker to control the semantics of data flow among components or applications.
The widespread adoption of the Java programming language by the Internet Community creates an opportunity for developers to create a new class of interactive applications. The language and environment specifications provide mechanisms for the creation and management of small reusable feature sets known as Java Beans, whose functions generally represent only a portion of a Web application. However, the specifications do not suggest methods by which these beans should dynamically exchange data.
The disclosed invention interconnects beans by defining a small number of interfaces between cooperating beans, and specifying the protocol for use of those interfaces. In this specification, the fundamental building block for data exchange is the xe2x80x9cdata item.xe2x80x9d The specification details how various forms of information are represented as data items, the lifetime management of these items, and the protocols for querying and extracting information from these items.
The protocols described here are based on the notion of an information bus. That is, all components that implement these interfaces can plug into the information bus. As a member of the bus, any component can exchange information with any other component in a structured way. Generally, the bus is asynchronous and is symmetric in the sense that no component may be considered the master of the bus; however, provision is made in the protocol for a controlling component that can act as the bus master or arbitrator of bus conversations.
In accordance with the present invention, a communications bus for use in an object-oriented computer system having multiple participants is disclosed that provides for the sharing of data between multiple participants on the bus. The communications bus includes membership generator logic configured to grant each requesting participant membership to the communications bus, data element builder logic configured to name data elements within the participant member, data notification logic, responsive to the data element builder logic, configured to notify all participant members of the data name of each persistent data handled by the data element builder logic, and data access logic configured to retrieve a data element by its associated data name in response to a data request by a participant member. Each data element is associated with at least one of the applications and is provided a specific data name. Each application defines how each data name shall be selected. The data notification logic is configured to provide announcements across the communications bus to all registered applications of data changes to any data elements.
The applications sharing the communications bus each utilizes a property parameter to determine the data name generated and held by the application. Each application further utilizes a data parameter to specify the data name. The data notification logic generates a list of registered applications. The data notification logic utilizes the list of registered applications to select which applications are to receive notice of changes or new additions of data elements.
Further disclosed is a method of sharing data elements between multiple applications either in a local computer system or across a distributed computer environment, which method comprises the steps of connecting each application to an information bus (InfoBus), registering each application with the InfoBus, providing a data name to each data element to be shared, announcing over the InfoBus to the registered applications the availability of each named data element, and requesting a data name by one of the registered applications to access the data element associated with the data name.
The method also includes the steps of changing the data within a data element and announcing the data change across the InfoBus to all registered applications. The method further includes the step of adding each registered application to a list of members for reference to notify of new or changed data elements as well as removing a member from the list of members upon notice of a member withdrawal.